package com.pig4cloud.pigx.contract.dto;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;

/**
 * 新增止盈止损委托
 *
 * @date 2022/9/6 20:43
 */
@Data
public class AppContractStopOrderNewDTO implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 仓位id
     */
    @ApiModelProperty(value = "仓位id")
    private Long positionId;

    /**
     * 币对名称
     */
    @ApiModelProperty(value = "币对名称")
    private String symbolName;

    /**
     * 仓位模式（0逐仓、1全仓）
     */
    @ApiModelProperty(value = "仓位模式（0逐仓、1全仓）")
    private String positionMode;

    /**
     * 方向（0开多、1开空）
     */
    @ApiModelProperty(value = "方向（0开多、1开空）")
    private String side;

    /**
     * 委托数量
     */
    @ApiModelProperty(value = "委托数量", required = true)
    @NotNull(message = "数据异常，num为空")
    private BigDecimal num;

    /**
     * 是否止盈（0否、1是）
     */
    @ApiModelProperty(value = "是否止盈（0否、1是）", required = true)
    @NotBlank(message = "数据异常，hasStopProfit为空")
    private String hasStopProfit;

    /**
     * 止盈触发价格，是否止盈为是时不能为空
     */
    @ApiModelProperty(value = "止盈触发价格，是否止盈为是时不能为空")
    private BigDecimal stopProfitTrigger;

    /**
     * 止盈价格类型（0市价、1限价），是否止盈为是时不能为空
     */
    @ApiModelProperty(value = "止盈价格类型（0市价、1限价），是否止盈为是时不能为空")
    private String stopProfitType;

    /**
     * 止盈价格，止盈价格类型为限价时不能为空
     */
    @ApiModelProperty(value = "止盈价格，止盈价格类型为限价时不能为空")
    private BigDecimal stopProfitPrice;

    /**
     * 是否止损（0否、1是）
     */
    @ApiModelProperty(value = "是否止损（0否、1是）", required = true)
    @NotBlank(message = "数据异常，hasStopLost为空")
    private String hasStopLost;

    /**
     * 止损触发价格，是否止损为是时不能为空
     */
    @ApiModelProperty(value = "止损触发价格，是否止损为是时不能为空")
    private BigDecimal stopLostTrigger;

    /**
     * 止损价格类型（0市价、1限价），是否止损为是时不能为空
     */
    @ApiModelProperty(value = "止损价格类型（0市价、1限价），是否止损为是时不能为空")
    private String stopLostType;

    /**
     * 止损价格，止损价格类型为限价时不能为空
     */
    @ApiModelProperty(value = "止损价格，止损价格类型为限价时不能为空")
    private BigDecimal stopLostPrice;
}
